using System.Collections.Generic;
using OracleInternal.Common;
using OracleInternal.SqlAndPlsqlParser.LocalParsing;

namespace OracleInternal.SqlAndPlsqlParser.RuleProcessors.ODPCommands
{
	internal static class OracleMbODPCommandsRuleMultiProcessors
	{
		public static OracleMbEarleyRuleMultiProcessorAddItem[] s_vRuleProcessorItems;

		static OracleMbODPCommandsRuleMultiProcessors()
		{
			OracleMbEarleyRuleMultiProcessorAddItem[] array = new OracleMbEarleyRuleMultiProcessorAddItem[24];
			OracleMbEarleyRuleMultiProcessorAddItem oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "compilation_unit",
				m_vRHSSymbols = new string[1]
				{
					"pragma_list_opt"
				},
				m_vRuleProcessor = Process_CompilationUnit_PragmaListOpt_StartWithRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllRulesStartingWith
			};
			array[0] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "compilation_unit",
				m_vRHSSymbols = new string[1]
				{
					"compound_trg_body"
				},
				m_vRuleProcessor = Process_CompilationUnit_CompoundTrgBody_EndWithRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllRulesEndingWith
			};
			array[1] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "compilation_unit",
				m_vRHSSymbols = new string[1]
				{
					"library_unit"
				},
				m_vRuleProcessor = Process_CompilationUnit_LibraryUnit_EndWithRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllRulesEndingWith
			};
			array[2] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "compilation_unit",
				m_vRHSSymbols = new string[1]
				{
					"pkg_body"
				},
				m_vRuleProcessor = Process_CompilationUnit_PkgBody_EndWithRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllRulesEndingWith
			};
			array[3] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "compilation_unit",
				m_vRHSSymbols = new string[0],
				m_vRuleProcessor = Process_Unprocessed_AllRules,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllRules
			};
			array[4] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "sql_statements",
				m_vRHSSymbols = new string[1]
				{
					"sql_statement"
				},
				m_vRuleProcessor = Process_SqlStatements_SqlStatement_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[5] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "sql_statements",
				m_vRHSSymbols = new string[2]
				{
					"sql_statements",
					"sql_statement"
				},
				m_vRuleProcessor = Process_SqlStatements_SqlStatements_SqlStatement_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[6] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "sql_statement",
				m_vRHSSymbols = new string[1]
				{
					"create"
				},
				m_vRuleProcessor = Process_SqlStatement_Create_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[7] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "sql_statement",
				m_vRHSSymbols = new string[1]
				{
					"library_unit"
				},
				m_vRuleProcessor = Process_SqlStatement_LibraryUnit_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[8] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "sql_statement",
				m_vRHSSymbols = new string[1]
				{
					"explain_plan"
				},
				m_vRuleProcessor = Process_SqlStatement_ExplainPlan_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[9] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "sql_statement",
				m_vRHSSymbols = new string[1]
				{
					"sqlplus_command"
				},
				m_vRuleProcessor = Process_SqlStatement_SqlPlusCommand_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[10] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "sql_statement",
				m_vRHSSymbols = new string[0],
				m_vRuleProcessor = Process_Unprocessed_AllRules,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllRules
			};
			array[11] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"adt_definition"
				},
				m_vRuleProcessor = Process_LibraryUnit_AdtDefinition_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[12] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"assembly_spec"
				},
				m_vRuleProcessor = Process_LibraryUnit_AssemblySpec_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[13] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"foreign_library_spec"
				},
				m_vRuleProcessor = Process_LibraryUnit_ForeignLibrarySpec_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[14] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"labeled_block_stmt"
				},
				m_vRuleProcessor = Process_LibraryUnit_LabeledBlockStmt_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[15] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"operator_definition"
				},
				m_vRuleProcessor = Process_LibraryUnit_OperatorDefinition_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[16] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"subprg_body"
				},
				m_vRuleProcessor = Process_LibraryUnit_SubprgBody_Rule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.SpecificRule
			};
			array[17] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"table_type_definition"
				},
				m_vRuleProcessor = Process_LibraryUnit_TableTypeDefinition_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[18] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"unlabeled_nonblock_stmt"
				},
				m_vRuleProcessor = Process_LibraryUnit_UnlabeledBlockStmt_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[19] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"call_statement"
				},
				m_vRuleProcessor = Process_LibraryUnit_CallStatement_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[20] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"pkg_spec"
				},
				m_vRuleProcessor = Process_LibraryUnit_PkgSpec_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[21] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"subprg_i"
				},
				m_vRuleProcessor = Process_LibraryUnit_SubprgI_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[22] = oracleMbEarleyRuleMultiProcessorAddItem;
			oracleMbEarleyRuleMultiProcessorAddItem = new OracleMbEarleyRuleMultiProcessorAddItem
			{
				m_vHeadSymbol = "library_unit",
				m_vRHSSymbols = new string[1]
				{
					"label_list_opt"
				},
				m_vRuleProcessor = Process_LibraryUnit_LabelListOpt_PartialRule,
				m_vAddType = OracleMbEarleyRuleMultiProcessorAddType.AllPartialMatchingRules
			};
			array[23] = oracleMbEarleyRuleMultiProcessorAddItem;
			s_vRuleProcessorItems = array;
		}

		public static object Process_CompilationUnit_PragmaListOpt_StartWithRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			return OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
		}

		public static object Process_CompilationUnit_CompoundTrgBody_EndWithRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			return OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
		}

		public static object Process_CompilationUnit_LibraryUnit_EndWithRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			return OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
		}

		public static object Process_CompilationUnit_PkgBody_EndWithRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			return OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
		}

		public static object Process_Unprocessed_AllRules(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			OracleLpStatement result = null;
			OracleLpParserContext oracleLpParserContext = (OracleLpParserContext)ctx;
			if (oracleLpParserContext.CurrentStatement == null)
			{
				List<LexerToken> tokens = ctx.Tokens;
				ParseNode currentParseNode = ctx.CurrentParseNode;
				int vBegin = tokens[currentParseNode.From].m_vBegin;
				int vEnd = tokens[currentParseNode.To - 1].m_vEnd;
				OracleLpTextFragment text = (oracleLpParserContext.CurrentStatementText = new OracleLpTextFragment(ctx.Script, vBegin, vEnd - vBegin));
				result = (oracleLpParserContext.CurrentStatement = new OracleLpStatement(text, (IOracleMetadata)oracleLpParserContext.GetActiveObject(0)));
			}
			oracleLpParserContext.CurrentStatement = null;
			return result;
		}

		public static object Process_SqlStatements_SqlStatement_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			return OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
		}

		public static object Process_SqlStatements_SqlStatements_SqlStatement_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			List<ParseNode> list = ctx.CurrentParseNode.Children();
			OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(list[0], 0, -1, ctx);
			return OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(list[1], 0, -1, ctx);
		}

		public static object Process_SqlStatement_Create_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			List<LexerToken> tokens = ctx.Tokens;
			ParseNode currentParseNode = ctx.CurrentParseNode;
			int vBegin = tokens[currentParseNode.From].m_vBegin;
			int vEnd = tokens[currentParseNode.To - 1].m_vEnd;
			OracleLpParserContext oracleLpParserContext = (OracleLpParserContext)ctx;
			OracleLpTextFragment text = (oracleLpParserContext.CurrentStatementText = new OracleLpTextFragment(ctx.Script, vBegin, vEnd - vBegin));
			OracleLpStatement oracleLpStatement2 = (oracleLpParserContext.CurrentStatement = new OracleLpCreateStatement(text, (IOracleMetadata)oracleLpParserContext.GetActiveObject(0)));
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("create");
			object result = OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
			ctx.RuleProcessorTable = ruleProcessorTable;
			return result;
		}

		public static object Process_SqlStatement_LibraryUnit_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			return OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
		}

		public static object Process_SqlStatement_SqlPlusCommand_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("sqlplus_command");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_SqlStatement_ExplainPlan_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			OracleLpParserContext oracleLpParserContext = (OracleLpParserContext)ctx;
			List<LexerToken> tokens = ctx.Tokens;
			ParseNode currentParseNode = ctx.CurrentParseNode;
			int vBegin = tokens[currentParseNode.From].m_vBegin;
			int vEnd = tokens[currentParseNode.To - 1].m_vEnd;
			OracleLpTextFragment oracleLpTextFragment2 = (oracleLpParserContext.CurrentStatementText = new OracleLpTextFragment(ctx.Script, vBegin, vEnd - vBegin));
			OracleLpStatement result = (oracleLpParserContext.CurrentStatement = new OracleLpExplainPlanStatement(oracleLpParserContext.CurrentStatementText, (IOracleMetadata)oracleLpParserContext.GetActiveObject(0)));
			oracleLpParserContext.HandleBindVariables = true;
			OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
			return result;
		}

		public static object Process_LibraryUnit_AdtDefinition_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("adt_definition");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_ForeignLibrarySpec_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("foreign_library_spec");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_LabeledBlockStmt_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			List<LexerToken> tokens = ctx.Tokens;
			ParseNode currentParseNode = ctx.CurrentParseNode;
			int vBegin = tokens[currentParseNode.From].m_vBegin;
			int vEnd = tokens[currentParseNode.To - 1].m_vEnd;
			((OracleLpParserContext)ctx).CurrentStatementText = new OracleLpTextFragment(ctx.Script, vBegin, vEnd - vBegin);
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("labeled_block_stmt");
			object result = OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
			ctx.RuleProcessorTable = ruleProcessorTable;
			return result;
		}

		public static object Process_LibraryUnit_AssemblySpec_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("assembly_spec");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_OperatorDefinition_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("operator_definition");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_SubprgBody_Rule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("subprg_body");
			object result = OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
			ctx.RuleProcessorTable = ruleProcessorTable;
			return result;
		}

		public static object Process_LibraryUnit_TableTypeDefinition_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("table_type_definition");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_UnlabeledBlockStmt_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("unlabeled_nonblock_stmt");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_CallStatement_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			OracleLpParserContext oracleLpParserContext = (OracleLpParserContext)ctx;
			List<LexerToken> tokens = ctx.Tokens;
			ParseNode currentParseNode = ctx.CurrentParseNode;
			int vBegin = tokens[currentParseNode.From].m_vBegin;
			int vEnd = tokens[currentParseNode.To - 1].m_vEnd;
			OracleLpTextFragment oracleLpTextFragment2 = (oracleLpParserContext.CurrentStatementText = new OracleLpTextFragment(ctx.Script, vBegin, vEnd - vBegin));
			OracleLpStatement result = (oracleLpParserContext.CurrentStatement = new OracleLpCallStatement(oracleLpParserContext.CurrentStatementText, (IOracleMetadata)oracleLpParserContext.GetActiveObject(0)));
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("call_statement");
			if (ctx.CurrentRule.IsUnary)
			{
				OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx);
			}
			else
			{
				OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx);
			}
			ctx.RuleProcessorTable = ruleProcessorTable;
			return result;
		}

		public static object Process_LibraryUnit_PkgSpec_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("pkg_spec");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_SubprgI_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("subprg_i");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}

		public static object Process_LibraryUnit_LabelListOpt_PartialRule(OracleMbEarleyParserMultiContext ctx, int ruleMatchPosition)
		{
			object obj = null;
			OracleMbEarleyRuleMultiProcessorTable ruleProcessorTable = ctx.RuleProcessorTable;
			ctx.RuleProcessorTable = ctx.GetRuleProcessorTable("label_list_opt");
			obj = ((!ctx.CurrentRule.IsUnary) ? OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode.Children()[ruleMatchPosition], 0, -1, ctx) : OracleMbEarleyRuleMultiProcessor.ProcessNodeRules(ctx.CurrentParseNode, ctx.CurrentRuleIndex + 1, -1, ctx));
			ctx.RuleProcessorTable = ruleProcessorTable;
			return obj;
		}
	}
}
